//package com.bookm.config;
//
//import com.alibaba.druid.DbType;
//import com.alibaba.druid.filter.Filter;
//
//import com.alibaba.druid.filter.stat.StatFilter;
//import com.alibaba.druid.pool.DruidDataSource;
//import com.alibaba.druid.support.http.StatViewServlet;
//import com.alibaba.druid.wall.WallConfig;
//import com.alibaba.druid.wall.WallFilter;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.boot.context.properties.ConfigurationProperties;
//import org.springframework.boot.web.servlet.ServletRegistrationBean;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//
//import javax.sql.DataSource;
//import java.util.HashMap;
//import java.util.List;
//import java.util.Map;
//
//@Configuration
//public class DataSourceConfiguration {
//
//    @Bean
//    @ConfigurationProperties(prefix = "spring.datasource")
//    public DataSource dataSource(@Autowired(required = false) List<Filter> filters){
//        DruidDataSource druidDataSource = new DruidDataSource();
//  /*
//    可用filter:druid-filter.properties
//    配置参考: https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE_Filter%E9%85%8D%E7%BD%AE
//  */
//        druidDataSource.setProxyFilters(filters);
//        return druidDataSource;
//    }
//
//    /**
//     * 配置druid监控的servlet,这是入口
//     */
//    @Bean
//    public ServletRegistrationBean<StatViewServlet> statServlet(){
//        ServletRegistrationBean<StatViewServlet> bean =
//                new ServletRegistrationBean<>(new StatViewServlet(),
//                        "/druid/*");
//        Map<String,String> initParam = new HashMap<>();
//        initParam.put("loginUsername","druid");
//        initParam.put("loginPassword","druid");
////        initParam.put("allow","127.0.0.1");
////        initParam.put("deny","120.22.22.22");
//
//        bean.setInitParameters(initParam);
//        return bean;
//    }
//
//    @Bean
//    public StatFilter statFilter() {
//        StatFilter statFilter = new StatFilter();
//        // 对未参数化的sql进行合并
//        statFilter.setMergeSql(true);
//        // 单位:毫秒,慢的阈值
//        statFilter.setSlowSqlMillis(3000);
//        return statFilter;
//    }
//
//
//    /**
//     * 配置参考: https://github.com/alibaba/druid/wiki/%E9%85%8D%E7%BD%AE-wallfilter
//     */
//    @Bean
//    public WallConfig wallConfig() {
//        WallConfig wallConfig = new WallConfig();
//        wallConfig.setDeleteAllow(false);
//        return wallConfig;
//    }
//
//    @Bean
//    public WallFilter wallFilter(WallConfig wallConfig) {
//        WallFilter wallFilter = new WallFilter();
//        // 避免DruidDataSource无法正确识别数据库的类型
//        wallFilter.setDbType(DbType.mysql);
//        wallFilter.setConfig(wallConfig);
//        return wallFilter;
//    }
//}
